#pragma once

#include <Windows.h>

class State
{
private:
	static HANDLE mMutex;

protected:
	DWORD mFlags;

public:
	DWORD Get();
	void Set(DWORD _newState);
	virtual void Add(DWORD _state ) = 0;
	void Remove(DWORD _state );
	bool Has(DWORD _state);
	void Toggle(DWORD _state);

public:
	State(void);
	~State(void);
};

